package kr.co.pension.admin.pe.ti.service;

import java.util.List;
import java.util.Map;

import kr.co.pension.admin.pe.ti.dao.PETIDao;
import kr.co.pension.admin.pe.ti.vo.PETIVo;
import net.sf.json.JSONArray;

import org.json.simple.JSONValue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service
public class PETIService {
	
	@Autowired
	public PETIDao dao;
	
	@Transactional(propagation=Propagation.REQUIRED)
	public int peti100T(PETIVo vo){
		
		int cnt = dao.peti200_1Q(vo);
		if(cnt==0){
			//펜션등록
			dao.peti100_1T(vo);
			
//			펜션정보 예약관련 등록
			dao.peti100_2T(vo);
			
			//환불정보 등록
			dao.peti100_3T(vo);
			
			//sms 정보 관리
			dao.peti100_4T(vo);
			
			//입금계좌, 픽업장소, 픽업정보, 펜션 도착시간 배열 저장
			if(vo.getPaa_descs()!=null && 0<vo.getPaa_descs().length){
				for(int i =0; i< vo.getPaa_descs().length ;i++){
					if(!"".equals(vo.getPaa_descs()[i])){
						vo.setPaa_desc(vo.getPaa_descs()[i]);
						vo.setPaa_type(vo.getPaa_types()[i]);
						vo.setPaa_order(i+1);
						dao.peti100_5T(vo);						
					}
				}
			}
		}
		return  cnt;
	}
	
	
	public int peti100_1Q(PETIVo vo) throws Exception {
		return dao.peti100_1Q(vo);
	}
	
	
	public List peti100_2Q(PETIVo vo) throws Exception {
		return dao.peti100_2Q(vo);
	}
	
	@Transactional(propagation=Propagation.REQUIRED)
	public int peti101T(PETIVo vo) throws Exception {
		
//		dao.peti102T(vo);
//		return dao.peti101T(vo);
		dao.peti101_1T(vo);
		dao.peti101_2T(vo);
		dao.peti101_3T(vo);
		dao.peti101_4T(vo);
		dao.peti101_5T(vo);
		dao.peti101_6T(vo);
		dao.peti101_7T(vo);
		dao.peti101_8T(vo);
		dao.peti101_9T(vo);
		dao.peti101_10T(vo);
		dao.peti101_11T(vo);
		dao.peti101_12T(vo);
		dao.peti101_13T(vo);
		dao.peti101_14T(vo);
		dao.peti101_15T(vo);
		dao.peti101_16T(vo);
		dao.peti101_17T(vo);
		dao.peti101_18T(vo);
		dao.peti101_19T(vo);
		dao.peti101_20T(vo);
		return 1;
	}
	
	
	public Map peti300Q(PETIVo vo) throws Exception {
		return dao.peti300Q(vo);
	}	
	public List peti300_1Q(PETIVo vo) throws Exception {
		return dao.peti300_1Q(vo);
	}
	
	
	public Map peti301Q(PETIVo vo) throws Exception {
		return dao.peti301Q(vo);
	}
	
	
	
	@Transactional(propagation=Propagation.REQUIRED)
	public int peti400T(PETIVo vo){
		
		//펜션등록
		dao.peti400_1T(vo);
		
//			펜션정보 예약관련 등록
		dao.peti400_2T(vo);
		
		//환불정보 등록
		dao.peti400_3T(vo);
		
		//기존자료 삭제
		dao.peti400_4T(vo);

		//입금계좌, 픽업장소, 픽업정보, 펜션 도착시간 배열 저장
		if(vo.getPaa_descs()!=null && 0<vo.getPaa_descs().length){
			for(int i =0; i< vo.getPaa_descs().length ;i++){
				if(!"".equals(vo.getPaa_descs()[i])){
					vo.setPaa_desc(vo.getPaa_descs()[i]);
					vo.setPaa_type(vo.getPaa_types()[i]);
					vo.setPaa_order(i+1);
					dao.peti100_5T(vo);						
				}
			}
		}
		return  1;
	}
	
	
	public List peti500Q(PETIVo vo) throws Exception {
		return dao.peti500Q(vo);
	}
	
	public List peti501Q(PETIVo vo) throws Exception {
		return dao.peti501Q(vo);
	}
	
	
	
	public void peti501T(PETIVo vo) throws Exception {
		dao.peti501T(vo);
	}
	
	
	public Map peti502Q(PETIVo vo) throws Exception {
		return dao.peti502Q(vo);
	}
	
	public int peti502T(PETIVo vo) throws Exception {
		return dao.peti502T(vo);
	}
	
	@Transactional(propagation=Propagation.REQUIRED)
	public int peti503T(PETIVo vo) throws Exception {
		
		dao.peti503T(vo);
		
		vo.setPr_no(vo.getCh_pr_no());
		vo.setRoom_ord(vo.getCh_room_ord());
		
		dao.peti503T(vo);
		
		return 1;
	}
	
	public List peti600Q(PETIVo vo) throws Exception {
		return dao.peti600Q(vo);
	}
	
	@Transactional(propagation=Propagation.REQUIRED)
	public void peti600T(PETIVo vo) throws Exception {
		dao.peti600T(vo);
		dao.peti600_1T(vo);
	}
	
	@Transactional(propagation=Propagation.REQUIRED)
	public int peti601T(PETIVo vo) throws Exception {
		
		int cnt = dao.peti601Q(vo);
		
		dao.peti601T(vo);
		
		vo.setSc_cnt(-cnt);
		dao.peti600_1T(vo);
		
		return 		1;
	}
	
	
	public int peti602T(PETIVo vo) throws Exception {
		return dao.peti602T(vo);
	}
	
	public List peti700Q(PETIVo vo) throws Exception {
		return dao.peti700Q(vo);
	}
	
	
	public void peti700T(PETIVo vo) throws Exception {
		dao.peti700T(vo);
	}
	
	public int peti701T(PETIVo vo) throws Exception {
		return dao.peti701T(vo);
	}
	
	public int peti702T(PETIVo vo) throws Exception {
		return dao.peti702T(vo);
	}
	
	public int peti800_1Q(PETIVo vo) throws Exception {
		return dao.peti800_1Q(vo);
	}
	
	public List peti800_2Q(PETIVo vo) throws Exception {
		return dao.peti800_2Q(vo);
	}
	
	
	public void peti800T(PETIVo vo) throws Exception {
		dao.peti800T(vo);
	}
	
	public int peti801T(PETIVo vo) throws Exception {
		return dao.peti801T(vo);
	}
	public int peti802T(PETIVo vo) throws Exception {
		return dao.peti802T(vo);
	}
	
	public int peti900_1Q(PETIVo vo) throws Exception {
		return dao.peti900_1Q(vo);
	}
	
	public List peti900_2Q(PETIVo vo) throws Exception {
		return dao.peti900_2Q(vo);
	}
	
	public List peti1000Q(PETIVo vo) throws Exception {
		return dao.peti1000Q(vo);
	}
	
	public void peti1001T(PETIVo vo) throws Exception {
		dao.peti1001T(vo);
	}
	
	
	public int peti1002T(PETIVo vo) throws Exception {
		return dao.peti1002T(vo);
	}
	
	
	public int peti1003T(PETIVo vo) throws Exception {
		return dao.peti1003T(vo);
	}
	
	public Map peti1101_1Q(PETIVo vo) throws Exception {
		return dao.peti1101_1Q(vo);
	}
	
	public int peti1101_2T(PETIVo vo) throws Exception {
		return dao.peti1101_2T(vo);
	}
	
	public int peti1101_3T(PETIVo vo) throws Exception {
		return dao.peti1101_3T(vo);
	}
	
	public int peti1103T(PETIVo vo) throws Exception {
		return dao.peti1103T(vo);
	}
	
	public int peti1200_1Q(PETIVo vo) throws Exception {
		return dao.peti1200_1Q(vo);
	}
	
	
	public List peti1200_2Q(PETIVo vo) throws Exception {
		return dao.peti1200_2Q(vo);
	}
	
	
	public List peti1300Q(PETIVo vo) throws Exception {
		return dao.peti1300Q(vo);
	}
	
	
	//캠핑 추가
	public void petc0103T(PETIVo vo) throws Exception {
		dao.petc0103T(vo);
	}
	
	public Map petc0104Q(PETIVo vo) throws Exception {
		return dao.petc0104Q(vo);
	}
	
	
	public int petc0105T(PETIVo vo) throws Exception {
		return dao.petc0105T(vo);
	}
	
	public List petc0107POP(PETIVo vo) throws Exception {
		return dao.petc0107POP(vo);
	}
	
	public int petc0108T(PETIVo vo) throws Exception {
		int[] y_coods = vo.getY_coods();
		int[] x_coods = vo.getX_coods();
		int[] pr_nos = vo.getPr_nos();
		int updateCnt=0;
		for(int i=0; i < pr_nos.length ;i++){
			vo.setX_cood(x_coods[i]);
			vo.setY_cood(y_coods[i]);
			vo.setPr_no(pr_nos[i]);
			
			dao.petc0108T(vo);
			updateCnt++;
		}
		
		return updateCnt;
	}
	
	public int petc0109T(PETIVo vo) throws Exception {
		return dao.petc0109T(vo);
	}
	
	public int petc0110T(PETIVo vo) throws Exception {

		return dao.petc0110T(vo);
	}
	
	public int petc0112T(PETIVo vo) throws Exception {

		return dao.petc0112T(vo);
	}
	
	public int petc0113T(PETIVo vo) throws Exception {

		return dao.petc0113T(vo);
	}	

	public int petc0115T(PETIVo vo) throws Exception {

		return dao.petc0115T(vo);
	}	
	
	
}
